/**
 * <p> Copyright © 2018 Inspur Group Co.,Ltd.  版权所有 浪潮集团有限公司 </p>.
 */
package com.inspur.cdc.server.license.api.service;

import com.inspur.cdc.server.license.api.sdk.dto.ResourceBean;
import com.inspur.cdc.server.license.api.sdk.vo.LicenseResult;

import java.util.List;

/**
 * @ClassName: LicenseBaseService
 * @Description: license base cbb
 *
 * @author: zhangdian
 * @date: 2021年4月13日 下午4:01:45
 */
public interface LicenseBaseService {


    /**
     * <p>
     * 根据产品名称获取机器码
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 上午10:35:55
     * @param productName
     * @return
     */
    String getMachineCode(String productName);


    /**
     * <p>
     * 获取License
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 上午11:26:27
     * @return
     */
    LicenseResult getRawLicenseList();

    /**
     * <p>
     * 激活
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 上午11:24:02
     * @param license
     *            激活码
     * @param softVersion
     *            软件版本
     * @param productName
     *            产品名称
     * @return LicenseResult
     */
    LicenseResult activate(String license, String softVersion, String productName);

    /**
     * <p>
     * 当前是否可以继续添加
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 上午11:24:55
     * @return LicenseResult
     */
    LicenseResult canAdd();

    /**
     * <p>
     * 添加资源，消耗一个license
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:16:00
     * @param bean
     * @return
     */
    LicenseResult addRes(ResourceBean bean);

    /**
     * <p>
     * 删除资源，续上一个license
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:16:27
     * @param bean
     * @return
     */
    LicenseResult deletRes(ResourceBean bean);

    /**
     * <p>
     * 批量删除序列号
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:16:43
     * @param beans
     * @return
     */
    LicenseResult deletResList(List<ResourceBean> beans);

    /**
     * <p>
     * 剩余license数量
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:27:30
     * @return
     */
    int getRemainNumber();

    /**
     * <p>
     * 当前是否试用到期
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:27:44
     * @return
     */
    boolean isTrialVersionEnd();

    /**
     * <p>
     * 当前系统版本（试用版，标准版，企业版等等）
     * </p>
     *
     * @author: zhangdian
     * @date: 2021年4月13日 下午2:27:59
     * @return
     */
    //TODO 枚举
    String getSystemType();

}
